Determining a charge or cost for communications (e.g., a call or data traffic) is complex and time consuming. Often the charge depends on multiple factors including communication time, communication date, communication rate plan, balance levels, the parties being communicated with, etc. Typically, the multiple input factors are all evaluated serially to determine the charging rate. Also, the rates do not necessarily remain the same during the communication (e.g., a call or data transfer) meaning that they need to be determined again as the factors influencing the charging rate change (e.g., call straddles a daytime/nighttime boundary, a balance level—for example, a total number of minutes or bytes). Since the determination of a charge or potential charge is typically performed several times for each communication (e.g., for initial authorization, at times during the communication, and at the end of the communication for determining the communication cost), charge determination represents a significant computational burden for a communication service provider and can be a rate limiting step for its ability to handle communication volume.